﻿#region Código Gerado Pela Fábrica de Software (Using)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using itau.im.entidade;
using EnterpriseLibraryWrapper;
#endregion

#region Código Gerado Pela Fábrica de Software (Namespace)
namespace itau.im.negocio
{

    #region Código Gerado Pela Fábrica de Software (Interface)
    /// <summary>
    /// **************************************************************************************************<BR/>
    /// AUTOR           : Fábrica de Software                                                             <BR/>
    /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
    /// ALTERADO POR    :                                                                                 <BR/>
    /// DATA ALTERAÇÃO  :                                                                                 <BR/>
    /// OBJETIVO        : Interface "IGrupoParametrosBS" utilizada para exibir o servico.                 <BR/>
    /// **************************************************************************************************<BR/>
    /// </summary>
    [ServiceContract]
    public interface IGrupoParametrosBS
    {
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ParametroAtribuicao> ObterParametrosNaoAlocadosPorGrupoParametroVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 07/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para obter a lista de parâmetros                   <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ParametroAtribuicaoGrupoAlocacao> ObterParametrosAtribuicaoGrupoAlocacaoPorGrupoParametrosVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 07/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método para obter a lista de parâmetros                                         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary> 
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<DominioParametroAtribuicao> ObterDominiosParametroAtribuicaoPorGrupoVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 07/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método para obter a lista de parâmetros                                         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary> 
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutosExcecaoPorGrupoParametrosVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 10/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método para obter a lista de parâmetros                                         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary> 
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ParametroAtribuicao> ObterParametrosAtribuicaoPorGrupoVigente(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiroDerivado> ObterProdutosFinanceirosDerivadosExcecaoPorGrupoParametrosVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 10/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método para obter a lista de parâmetros                                         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary> 
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<GrupoParametroAtribuicao> ObterGruposDeParametros();

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        int ObterCodigoGrupoParametroAtribuicao(ProdutoFinanceiroDerivado produtoFinanceiroDerivado, DateTime dataInicioVigencia);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<RegraAtribuicaoCurva> ObterRegras(int codigoGrupo, DateTime dataInclusaoVigencia);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarProdutoFinanceiroAlocacoes(int codigoGrupoParametros, IList<ProdutoFinanceiro> listaProdutosFinanceiros);


        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para remover uma GrupoParametroAtribuicao.          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void RemoverGrupoParametroAtribuicao(int codigoGrupo);


        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 02/09/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para Remover Parametro Atribuicao Grupo Alocacao   <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void RemoverParametroAtribuicaoGrupoAlocacao(IList<ParametroAtribuicaoGrupoAlocacao> listaParametroAtribuicaoGrupoAlocacao);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método RemoverProdutoFinanceiroAlocacoes                                        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void RemoverProdutoFinanceiroAlocacoes(int codigoGrupo, DateTime dataHoraFim);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarGrupoParametros                                                     <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        int CriarGrupoParametros(GrupoParametroAtribuicao grupoParametros);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 26/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterProdutosFinanceirosNaoAlocados                                      <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutosFinanceirosNaoAlocados();

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Produtos Financeiros Por Grupo Parametros Vigente                         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo">codigoGrupo</param>
        /// <returns>Lista de ProdutoFinanceiro</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutosFinanceirosPorGrupoParametrosVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Dominios Parametros Atribuicao Por Grupo Vigente                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo">codigoGrupo</param>
        /// <returns>Lista de ParametroAtribuicao</returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<DominioParametroAtribuicao> ObterDominiosParametrosAtribuicaoPorGrupoVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarParametroAtribuicaoGrupoAlocacoes                                   <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="listaParametrosEndogenosAlocacao">Lista de Objetos do tipo ParametroAtribuicaoAlocacao</param>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarParametroAtribuicaoGrupoAlocacoes(IList<ParametroAtribuicaoGrupoAlocacao> listaParametrosEndogenosAlocacao);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 26/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Numero Parametros Atribuicao Grupo Alocacao Por Codigo Parametro.         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        int ObterNumeroParametroAtribuicaoGrupoAlocacaoPorCodigoParametro(int codigoParametro);

    }

    #endregion

}

#endregion